package com.rois.librois.libRoISCommon;

/**
 * Interface definition to control CORBA server.
 *
 * @author Miki Sato <miki.sato.1225@gmail.com>
 *
 *    The MIT licence
 *
 *    Copyright (C) 2011
 *      ATR Intelligent Robotics and Communication Laboratories, Japan
 *
 *    Permission is hereby granted, free of charge, to any person obtaining a copy
 *    of this software and associated documentation files (the "Software"), to deal
 *    in the Software without restriction, including without limitation the rights
 *    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
 *    of the Software, and to permit persons to whom the Software is furnished to do so,
 *    subject to the following conditions:
 *
 *    The above copyright notice and this permission notice shall be included in all
 *    copies or substantial portions of the Software.
 *
 *    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
 *    INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
 *    PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 *    HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 *    OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 *    SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

public interface ServerOperation {
	/**
	 * initialize ORB.
	 * @param nameserver: host address and port of CORBA name service
	 * @return true: success / false: failure
	 */
	boolean initialize(
		String nameserver
	);

	/**
	 * register server name to CORBA name service.
	 * @param servername: CORBA server name
	 * @return true: success / false: failure
	 */
	boolean register(
		String servername
	);

	/**
	 * start CORBA server thread.
	 * @return true: success / false: failure
	 */
	boolean start();

	/**
	 * stop CORBA server thread and unregister server name from CORBA name service.
	 */
	void stop();

}